/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.util.ArrayList;
import models.Archivo;

/**
 *
 * @author gdf
 */
public class TopTen {
    
    private ArrayList<ArrayList<String>> topten;
    
    public TopTen(){
        topten=Archivo.obtenerTopTen();
        
    }
    
    public ArrayList<String> listaTopTen(){
        ArrayList<String> resultado = new ArrayList();
        String cadena;
        for(int t=0; t<topten.size(); t++){
            cadena=topten.get(t).get(0)+" tiempo: "+topten.get(t).get(1)+":"+topten.get(t).get(2)+":"+topten.get(t).get(3);
            resultado.add(cadena); 
        }
        return resultado;
    }
    
    public boolean posibleTop(int hora, int minuto, int segundo){
        int horaT = Integer.parseInt(topten.get(topten.size()-1).get(1));
        int minutoT = Integer.parseInt(topten.get(topten.size()-1).get(2));
        int segundoT = Integer.valueOf(topten.get(topten.size()-1).get(3));
        int res1 = horaT - hora;
        int res2 = minutoT - minuto;
        int res3 = segundoT - segundo;
        if (res1>0){
            return true;
        }else if (res1==0){
            if(res2>0){
                return true;
            }else if (res2==0){
                if (res3>0){
                    
                    return true;
                }else if (res3==0){
                    return true;
                }
            }
        }
        
        return false;      
    }
    
    public void cargarAArchivoTopActual(){
        Archivo.cargarTopTen(topten);
    }
    
    public boolean cargarATop(String nombre, int hora, int minuto, int segundo){
        ArrayList<ArrayList<String>> topTenAux = new ArrayList();
        topTenAux= new ArrayList();
        int hora2,minuto2,segundo2;
        int recorrido =0;
        boolean cargado=false;
        ArrayList<String> nuevo = new ArrayList();
        nuevo.add(nombre);
        nuevo.add(Integer.toString(hora));
        nuevo.add(Integer.toString(minuto));
        nuevo.add(Integer.toString(segundo));
        while(recorrido<topten.size() && (!cargado)){
            hora2= Integer.parseInt(topten.get(recorrido).get(1));
            minuto2=  Integer.parseInt(topten.get(recorrido).get(2));
            segundo2= Integer.parseInt(topten.get(recorrido).get(3));
            if(mejorTiempo(hora,minuto,segundo,hora2,minuto2,segundo2)){
                topTenAux.add(nuevo);
                cargado=true;
            }else{
                topTenAux.add(topten.get(recorrido));
            }
            recorrido++;
        }
        while ((topTenAux.size()<=topten.size())&&(recorrido<10)){
            if(!cargado){
                topTenAux.add(nuevo);
            }else{
                topTenAux.add(topten.get(recorrido-1));
            }
            recorrido++;
        }
        topten=topTenAux;
        cargarAArchivoTopActual();

        return cargado;
        
    }
    /*Si el primer tiempo es mejor que el segundo*/
	/*FALTA QUE ARREGLARLO*/
    private static boolean mejorTiempo(int hora, int minuto, int segundo, int hora2, int minuto2, int segundo2){
        int res1 = hora2 - hora;
        int res2 = minuto2 - minuto;
        int res3 = segundo2 - segundo;
        if (res1>0){
            return true;
        }else if (res1==0){
            if(res2>0){
                return true;
            }else if (res2==0){
                if (res3>0){
                    return true;
                }else if (res3==0){
                    return true;
                }
            }
        }
        
        return false;       
    }
    
    private static ArrayList<ArrayList<String>> copiarArrayList(ArrayList<ArrayList<String>> aCopiar){
        ArrayList<ArrayList<String>> copia = new ArrayList();
        for(int elem=0;elem<aCopiar.size();elem++){
            copia.add(aCopiar.get(elem));
        }
        return copia;
    }
    
    

}
